;--------------------------------------- ;WRITTEN BY STEVEN MALECHEK FOR ;APPLIED ENGINEERING ON JAN 25, 1985 ;Copyright (c) 1985, 1986 Applied Engineering ;--------------------------------------- ;MACRO POPS 16 BIT ARGUMENT ; .MACRO POP PLA STA %1 PLA STA %1+1 .ENDM ;--------------------------------------- ;MACRO PUSH 16 BIT ARGUMENT ; .MACRO PUSH LDA %1+1 PHA LDA %1 PHA .ENDM ;--------------------------------------- ;MACRO DUMPS 2 WORDS OF ZEROS ; .MACRO DUMP PLA PLA PLA PLA .ENDM ;--------------------------------------- ;FUNCTION TO READ CLOCK ; .FUNC READCLOCK,1 RETURN .EQU 0 ;STORE RETURN ADDRESS AT $00 HOLD .EQU 10 ;DATA TO HOLD CLOCK RELEASE .EQU 2F ;DATA TO RELEASE CLOCK CONTRG .EQU 04 ;CONTROL REGISTER DATA INITALATION PORTA .EQU 0C080 ;PORT A BASE ADDRESS CRTA .EQU 0C081 ;CONTROL REGISTER A BASE ADDRESS PORTB .EQU 0C082 ;PORT B BASE ADDRESS CRTB .EQU 0C083 ;CONTROL REGISTER A BASE ADDRESS .PUBLIC SLOT ;GET SLOT FOR PASCAL PROGRAM POP RETURN DUMP ;GET RID OF TRASH PLA ;GET LSB OF SELECT AND #0F ;MASK OFF UPPER NIBBLE TAY ;PUT IN Y FOR INDEXING LDX SLOT LDA #00 STA CRTA,X ;CLEAR CONTROL REG A STA CRTB,X ;SAME STA PORTA,X ;SET PORT A FOR INPUT LDA #0FF STA PORTB,X ;SET PORT B FOR OUTPUT LDA #CONTRG ;SET UP FOR DATA EXCHANGE STA CRTA,X STA CRTB,X JSR READCL ;READ DIGIT CPY #00 ;CHECK FOR DAY DIGIT BEQ FINISH ;IF SO EXIT (DAY IS ONLY ONE DIGIT) CLC STA TEMP ;SAVE A FOR MULTIPLY ASL A ;MULTIPLY A BY TEN ASL A ;TO GET IT IN TENS PLACE ADC TEMP ASL A STA TEMP INY ;GET ONES DIGIT JSR READCL CLC ADC TEMP ;ADD TO TENS DIGIT FINISH PHA ;PUT LSB ON STACK PUSH RETURN ;RESTORE RETURN ADDRESS RTS ;RETURN TO PASCAL READCL LDA #HOLD ;HOLD CURRENT TIME FOR READING STA PORTB,X ;START READING THE CLOCK LDA TABLE,Y ;GET CODE FOR DIGIT STA PORTB,X ;SEND CODE NOP ;WAIT NOP LDA PORTA,X ;GET DATA PHA LDA #RELEASE ;RELEASE CLOCK FROM HOLD STA PORTB,X PLA CPY #03 ;CHECK IF IT READED DATE 10 PLACE BEQ MASK ;IF SO CLEAR UP CPY #07 ;CHECK IF IT READED HOURS 10 PLACE BNE NOMASK ;IF NOT DON'T MASK MASK AND #03 ;SAVE ONLY BITS 0 AND 1 NOMASK AND #0F ;REMOVE HIGH BITS RTS TABLE .BYTE 36 ;CODE FOR DAY OF WEEK .WORD 393A ;MONTH .WORD 3738 ;DATE .WORD 3B3C ;YEAR .WORD 3435 ;HOURS .WORD 3233 ;MINUTES .WORD 3031 ;SECONDS TEMP .BYTE 00 ;TEMPORARY STORAGE FOR MULT .END ;END OF ASSEMBLY